#include <stdio.h>
#include <stdlib.h>
//顺序表的实现--动态分配

#define InitSize 10
#define ElemType int

typedef struct {
	ElemType *data;		//指示动态分配数组的指针
	int MaxSize;	//顺序表的最大容量
	int length;		//顺序表的当前容量
}SeqList;

//动态申请空间初始化
void InitList(SeqList *L) {
	L->data = (ElemType*)malloc(InitSize*sizeof(ElemType));	//用malloc在堆里申请一片连续的存储空间
	L->MaxSize = InitSize;
	L->length = 0;
}

//增加动态数组的长度
void IncreaseSize(SeqList *L,int len) {
	int *p = L->data;
	L->data = (ElemType*)malloc((L->MaxSize+len)*sizeof(ElemType));	//新空间要能装下原来的所有数据并加上新数据
	for (int i=0; i<L->length; i++) {
		L->data[i] = p[i];		//将数据复制到新的区域
	}
	L->MaxSize = L->MaxSize + len;
	free(p);	//释放原来的空间
}

int main() {
	SeqList L;
	InitList(&L);
	IncreaseSize(&L,2);
	printf("%d",L.MaxSize);
	return 0;
}